package com.ruoyi.web.controller.iot.utils;

import lombok.SneakyThrows;

import java.util.List;

public class ImplServiceUtils {
	public static void main(String[] args) {

	}

	@SneakyThrows
	public static List<Class<?>> getImplementations(Class<?> serviceInterface) throws ClassNotFoundException {
//		List<Class<?>> implementations = new ArrayList<>();
//
//		// 获取所有已加载的类
//		ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
//		if (classLoader == null) {
//			classLoader = ImplServiceUtils.class.getClassLoader();
//		}
//		System.out.println(MyServiceImpl.class.getName());
//		Class<?> cla = classLoader.loadClass("com.ruoyi.web.controller.iot.utils.MyServiceImpl");
//		Class<?> cla2 = classLoader.loadClass("com.ruoyi.web.controller.iot.utils.MyServiceImpl");
//		Class<?> claInface = classLoader.loadClass("com.ruoyi.web.controller.iot.utils.MyService");
//		System.out.println(claInface.isAssignableFrom(cla));
//		System.out.println(claInface.isAssignableFrom(cla2));
//		System.out.println(cla.isAssignableFrom(claInface));
//		MyService se = (MyService) cla.newInstance();
//		se.doSomething();

//		System.out.println(classLoader.loadClass(serviceInterface.getName()).getName());
//		System.out.println(classLoader.loadClass(serviceInterface.getName()).getClasses().length);
//		System.out.println(classLoader.loadClass(serviceInterface.getName()).getClassLoader().getClass().getInterfaces().length);
////
//		Class<?> clse = URLClassLoader.getSystemClassLoader().loadClass(serviceInterface.getName());
//		Class<?>[] clz = clse.getDeclaredClasses();
//		Class<?>[] clzes = clse.getClasses();
//		Class<?>[] clzz = clse.getInterfaces();
//		// 遍历所有类，判断是否实现了service接口
//		for (Class<?> clazz : clz) {
//			if (serviceInterface.isAssignableFrom(clazz) && !clazz.equals(serviceInterface)) {
//				implementations.add(clazz);
//			}
//		}

		return null;
	}
}
